package live.zs.mybatisflexboot;

import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.ColumnConfig;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.Test;

/**
 * CodeGenerator
 * &#064;description
 *
 * @author madison
 * &#064;date 2023/5/22 18:13
 */
public class CodeGenerator {

    @Test
    public void codeGenerator() {
        //配置数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/data_integration?useUnicode=true&useSSL=false&characterEncoding=UTF-8");
        dataSource.setUsername("madison");
        dataSource.setPassword("zs123456");

        //创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();

        //设置只生成哪些表
        globalConfig.addGenerateTable("tb_user", "tb_order");

        //设置 entity 的包名
        globalConfig.setEntityPackage("live.zs.mybatisflexboot.entity");

        //设置表前缀
        globalConfig.setTablePrefix("tb_");

        //设置 entity 是否使用 Lombok
        //globalConfig.setEntityWithLombok(true);

        //是否生成 mapper 类，默认为 false
        globalConfig.setMapperGenerateEnable(true);

        //设置 mapper 类的包名
        globalConfig.setMapperPackage("live.zs.mybatisflexboot.mapper");

//        globalConfig.setServiceGenerateEnable(true);
//        globalConfig.setServicePackage("live.zs.mybatisflexboot.service");
//
//        globalConfig.setControllerGenerateEnable(true);
//        globalConfig.setControllerPackage("live.zs.mybatisflexboot.controller");

        //可以单独配置某个列
//        ColumnConfig columnConfig = new ColumnConfig();
//        columnConfig.setColumnName("tenant_id");
//        columnConfig.setLarge(true);
//        columnConfig.setVersion(true);
//        globalConfig.addColumnConfig("account", columnConfig);

        //通过 datasource 和 globalConfig 创建代码生成器
        Generator generator = new Generator(dataSource, globalConfig);

        //生成代码
        generator.generate();
    }
}
